Project scheduling and management system that uses product data with product classes

ABSTRACT

Systems and methods of the present disclosure facilitate scheduling and managing a project. In some embodiments, the system includes a quoting module, a product data module, and a project planning module executing on at least one processor of a server. The product data module may be configured to store at least one product. The product stored in the project module may have a product class indicating that the product is a labor product, parts product, or agreements product. The system may be configured to copy products from the product data module to the quoting module. The system may be configured to also copy products from the product data module to the project planning module, and generate tasks for the project planning module based on the products.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, and claims priority to and thebenefit of U.S. Non-Provisional patent application Ser. No. 17/101,450titled “PROJECT SCHEDULING AND MANAGEMENT SYSTEM THAT USES PRODUCT DATAWITH PRODUCT CLASSES”, filed on Nov. 23, 2020, which is a continuationof and claims priority to and the benefit of Non-Provisional patentapplication Ser. No. 15/624,628 titled “PROJECT SCHEDULING ANDMANAGEMENT SYSTEM THAT USES PRODUCT DATA WITH PRODUCT CLASSES”, filed onJun. 15, 2017, which is a continuation of and claims priority to and thebenefit of U.S. Non-Provisional patent application Ser. No. 13/837,337titled “PROJECT SCHEDULING AND MANAGEMENT SYSTEM THAT USES PRODUCT DATAWITH PRODUCT CLASSES”, filed on Mar. 15, 2013, which is herebyincorporated herein by reference in its entirety for all purposes.

FIELD OF THE DISCLOSURE

The present disclosure generally relates to the use of project planningsystems to schedule and manage projects. More specifically, the presentdisclosure relates to using product data to drive the project planningprocess, based on product classes associated with the product data.

BACKGROUND OF THE INVENTION

Project planning systems can schedule and manage projects of varioustypes. Tasks that are required in order to complete the project aremanually entered and assigned.

SUMMARY OF THE INVENTION

Service providers are in the business of delivering equipment andservices to customers. The services they offer to their customersinclude installation, configuration, and ongoing maintenance of theequipment they deliver. In order to facilitate providing services, aservice provider can use a project planning system to schedule andmanage the plethora of activities involved in providing theseinstallation, configuration, and maintenance services.

The information used to enter and update tasks in a project planningsystem can be derived from the products that go into the original quotesent to the customer. For example, if the quote contains an emailserver, then the product data associated with the email server willinclude information such as the part number and the price of thehardware server, as well as the part number and price of the softwarelicense for the email software needed on the server. In the presentdisclosure, the product data can also include information about theamount of time and skill set needed to install the server, the amount oftime and skill set needed to install and configure the email software,the interval at which regular maintenance of the server hardware isrequired, the amount of time and skill set needed to provide the regularmaintenance of the server hardware, the interval at which regularmaintenance of the email software is required, and the amount of timeand skill set needed to provide the regular maintenance of the emailsoftware. With this product information, tasks can be automaticallygenerated for the project planning system to install, configure, andmaintain the server hardware and email software. The maintenance taskscan be automatically entered on an ongoing basis, for example, daily,weekly, or monthly. Additionally, the skill sets from the product datacan be used to automatically assign the tasks to appropriate staff.

The level of automation described in the present disclosure, combinedwith the “leveling” function available in modern project planningsystems, makes it possible to completely automate the creation of theproject plan using only the product data from the customer quote. Thislevel of automation increases the efficiency of the service provider,and additionally reduces the human error inherent in more manualprocesses, which increases the level of customer satisfaction. As aresult, the service provider has a large business advantage with thepresent disclosure.

Systems and methods of the present disclosure facilitate scheduling andmanaging a project. For example, the present disclosure provides aquoting module, a product data module, and a project planning module.The product data module stores product descriptions and can beconfigured to store products. The products can have a product classindicating that they are a labor product, parts product, or agreementsproduct. Products can be copied from the product data module to both thequoting module and the project planning module. Tasks can be generatedfor the project planning module based on the products.

At least one aspect of the present disclosure is directed to a systemfor project scheduling and management. In some embodiments, the systemcan include a quoting module, a product data module, and a projectplanning module. The product data module can be configured to store atleast one product. The products have a product class, indicating thatthe product is a labor product, parts product, or agreements product.The system can be configured to copy a first product from the productdata module to the quoting module. The system can be configured to copythe first product from the product data module to the project planningmodule. The system can generate a task for the product planning modulebased on the first product.

At least one aspect of the present disclosure is directed to a methodfor project scheduling and management. In some embodiments, the methodcan include storing, by a product data module executing on the server,at least one product, wherein the product comprises a product class, theproduct class including at least one of a labor product, a partsproduct, and an agreements product. In some embodiments, the method caninclude copying a first product from the product data module to aquoting module executing on the server. In some embodiments, the methodcan include copying the first product from the product data module to aproject planning module executing on the server. In some embodiments,the method can include generating, based on the first product, a taskfor the project planning module.

At least one aspect of the present disclosure is directed to a systemfor automatically scheduling and managing projects. In some embodiments,the system can include a product data module. The product data modulecan execute on at least one processor of a server. The product datamodule can be configured to obtain a first product. The first productcan include a product description and a product class, where the productclass can include at least one of a labor product, a parts product, andan agreements product. The system can include a quoting moduleconfigured to generate a quote and update the product data with thequote. The quote can be generated based, at least in part, on a subsetof the product data. The system can also include a project planningmodule. The project planning module can be configured to obtain theupdated product data with the quote. The project planning module cangenerate, based on the product class and the quote, a task. The task canbe associated with at least one of a resource type, skill level, price,start time, deadline, and order.

In some embodiments, the project planning module can identify, based onthe generated task, an available resource to perform the task, andassign the task.

BRIEF DESCRIPTION OF THE DRAWINGS

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

FIG. 1 is an illustrative block diagram of an embodiment of a system toschedule and manage a project.

FIG. 2 is an illustrative block diagram of an embodiment of a serviceprovider.

FIG. 3 is an illustrative block diagram of an embodiment of the businessunits and processes within a service provider.

FIGS. 4A-H are illustrative block diagrams of embodiments of therelationships between the business units and the processes within aservice provider.

FIG. 5 is an illustrative block diagram of an embodiment of productdata.

FIG. 6 is an illustrative block diagram of an embodiment of the dataflow within a service provider.

FIGS. 7A-C are illustrative block diagrams of embodiments of the flow ofinformation from product data to the business processes within a serviceprovider.

FIG. 8 is an illustrative block diagram of an embodiment of reliablesynchronization of the quote and invoice seen by a customer.

FIG. 9 is an illustrative block diagram of an embodiment of interfacesbetween product data and external systems.

FIG. 10 is an illustrative block diagram of an embodiment of templatesfor product data.

FIG. 11 is an illustrative block diagram of an embodiment of bundles forproduct data.

FIG. 12 is an illustrative example of an embodiment of a user interfacefor overall access to a resource planning system.

FIG. 13 is an illustrative example of an embodiment of a user interfacefor displaying and modifying product data.

FIG. 14 is an illustrative example of an embodiment of a user interfacefor displaying and modifying a single item of product data.

FIG. 15 is an illustrative example of an embodiment of a user interfacefor displaying and modifying a quote for a customer.

FIG. 16 is an illustrative example of an embodiment of a quote for acustomer.

FIG. 17 is an illustrative example of an embodiment of a user interfacefor sales management.

FIG. 18 is an illustrative example of an embodiment of a user interfacefor managing a single sales opportunity.

FIG. 19 is an illustrative example of an embodiment of a user interfacefor managing the products associated with a single sales opportunity.

FIG. 20 is an illustrative example of an embodiment of a user interfacefor creating a sales order from a sales opportunity that was won.

FIG. 21 is an illustrative example of an embodiment of a user interfacefor displaying and modifying agreements.

FIG. 22 is an illustrative example of an embodiment of a user interfacefor project management.

FIG. 23 is an illustrative example of an embodiment of a user interfacefor managing procurement.

FIG. 24 is an illustrative example of an embodiment of a user interfacefor creating a service ticket from a sales order.

FIG. 25 is an illustrative example of an embodiment of a user interfacefor displaying and modifying a service ticket.

FIG. 26 is an illustrative example of an embodiment of a user interfacefor displaying and modifying the financial aspects of a service ticket.

FIG. 27 is an illustrative example of an embodiment of a user interfacefor displaying and modifying an invoice for a customer.

FIG. 28 is an illustrative example of an embodiment of an invoice for acustomer.

FIG. 29 is an illustrative example of an embodiment of classes forproduct data.

FIG. 30 is an illustrative example of an embodiment of a user interfacefor interfacing product data to an external product data source.

FIG. 31 is an illustrative example of an embodiment of a user interfacefor selecting a product template.

FIG. 32 is an illustrative example of an embodiment of a user interfacefor displaying and modifying a product bundle.

FIG. 33 is an illustrative example of an embodiment of a user interfacefor selecting products to include in a product bundle.

FIG. 34 is an illustrative flowchart depicting one embodiment of thesteps taken to schedule and manage a project.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Systems and methods of the present disclosure can use product data todrive the creation of tasks in a project management system. Product datacan describe various classes of products including, e.g., partsproducts, labor products and agreement products. Based on the type ofproduct data and the product description, the systems and methodsdisclosed herein can generate a quote for the product, which can then beused to generate, enter, assign and update one or more tasks associatedwith the product or project.

In an illustrative example, a service provider may provide a networksolution for a small business. As part of the network solution, theservice provider may provide equipment (e.g., a firewall server,routers, Ethernet wires), installation (e.g., installing servers,routers and wires, setting up server, configuring client machines), andan agreement (e.g., warranty, maintenance program, routine updates,setting up new client machines on-demand). Each of these components ofthe network solution may be performed by various actors or entities. Forexample, a first entity may provide the server equipment, while a secondentity may provide the wires and routers, a third entity performs theinstall, and a fourth entity negotiates the agreements. To determine thevarious tasks that need to be performed to complete the project, thesystems and methods of the present disclosure can use the underlyingproduct data to drive the task generation and assignment process. Forexample, a quote module or quoting business process can generate a quoteusing at least a subset of the product data. Once the customer agrees tothe terms of the quote, which may require revising one or more term ofthe quote, the product data can be updated based on the quote.

Thereafter, a project planning module can obtain the latest product datato generate one or more tasks based on a product description and aproduct class. For example, the project planning module can determinethat a product description is a model number for a router and theproduct class is a part. The project planning module may furtherdetermine that this part needs to be ordered in order to complete theproject. The product data may include additional terms associated withthis part such as a price, quantity, shipping rate, delivery time, orwarranty. In some embodiments, the project planning module may generatea task for ordering the part. In some embodiments, the system maydetermine, based on the product data, that the part will need to beinstalled in order to complete the project. In some embodiments, thesystem may determine that prior to generating and assigning a task forinstalling the product, that the part should be ordered and received atthe site of installation or received by the installer. Accordingly, insome embodiments, the project planning module may schedule the orderingtask with a deadline that is no later than the latest time an installercan install the part and still meet the overall timeline for theproject. In other embodiments, the system may receive an indication thatthe part has arrived, and, responsive to receiving this indication,generate a task to install the part. That is, in the event tasks thatare dependent on one another, the system can receive an indication ofwhen a previous tasks is completed, and the project planning module canautomatically schedule the subsequent task, based on the product data.

FIG. 1 illustrates a block diagram of a system to schedule and manage aproject. In brief overview, the business is a service provider 201 witha project scheduling and management system 204. In some embodiments, thesystem 204 can be, or include, a resource planning system. The projectscheduling and management system 204 can include a product data module301 that stores product information 101, with both a product description102 and a product class 103. The project scheduling and managementsystem 204 can include a quoting module 303 a and a project planningmodule 303 e. The quoting module 303 a and project planning module 303 ecan be communicatively coupled to each other or the product data module301. The system can copy a product 101 a from the product data module301 to a product 101 b in the quoting module 303 a, and also copy theproduct 101 a to a product 101 c in the project planning module 303 e.The system can then automatically use the product 101 c to create a task104 in the project planning module. This process can be repeated to makeadditional tasks 104 from products 101.

In further detail, the service provider 201 can include any entity thatprovides services or equipment to customers. Services may includeinstallation, configuration, and ongoing maintenance of the equipmentthey deliver. In some embodiments, service providers may includemanufacturers that manufacture equipment and provide the equipment tocustomers. Service providers may communicate with third-party vendors toprovide one or more services to the customers, and may further assigntasks to the one or more vendors. In some embodiments, the serviceproviders may assign tasks electronically via a network, SMS textmessaging, electronic mail, or other communication technique. In someembodiments, the servicer provider may communicate with vendors orcustomers electronically, telephonically or physically.

The product data module 301, which is discussed in further detail below,includes one or more products. Each product can include a productdescription and a corresponding product class. For example, installing afurnace may be a labor product class because it includes a personperforming a task. The description of the product, e.g., theinstallation, can include the type of furnace (e.g., gas, oil, air,water), a make/model number of the furnace, estimated cost ofinstallation, installation timeline, or skill level required to performthe installation.

The quoting module or quoting business process 303 a can obtain at leasta subset of the product data to facilitate generating a quote, asdiscussed further below. The quoting module 303 a can obtain the productdata in any manner including, e.g., copying the information from theproduct data module, referring to the data in the product module,transferring the product data information from the product data module,or otherwise conveying the product data information. The quoting module303 a may obtain a subset of the product data, for example, themake/model of the furnace, the cost of the furnace, and the estimatedinstallation cost to generate a quote and provide the quote product tothe customer. The customer may alter one or more terms of the quote;e.g., the customer may determine that the make/model is too expensive ornot compatible with a pre-existing system, and alter the part. Thequoting module 303 a may then save the revised quote, which can becopied back to the product data module 301, saved in the product datamodule 301, or conveyed directly to the project planning module 303 e orproject planning business process 303 e.

The project planning module 303 e can obtain at least a subset ofproduct data from either the product data module 301 or the quotingmodule 303 a, or another repository that includes that the revisedproduct data based on the quote. The product data may be copied,transferred, or otherwise conveyed to the project module 303 e. Theproject data module 303 e can generate a task based on the obtainedupdated product data. For example, the project planning module 303 e canplan, organize and manage resources (e.g., equipment and personnel) tofacilitate completion of a project. In some embodiments, the projectplanning module 303 e can take into account various factors such asscheduling, cost control, budget management, resource allocation, orresource leveling.

For example, the product data may indicate that a part needs to beordered and that the part needs to be installed (e.g., a parts productsand a labor product). The product data may also indicate who is incharge of ordering the part, the skill level required to perform theinstallation, and the timeline for the project. Based on the informationin the product data, the project planning module 303 e can generate atask for ordering the part and assign the task to the person or entityresponsible for ordering parts, which may indicated in the product dataor obtained from a repository containing information about entities thatcan perform certain tasks. The task can indicate information about thepart (e.g., make/model, quantity, price), from where to order the part,and by when the part should be ordered or received by the customer orthe installer. The project planning module 303 e can also generate atask to install the product based on the product data. For example, theproject planning module 303 e can identify the skill level required toperform the task and further identify an available person to perform thetask. In some embodiments, the product data ma include information aboutthe availability of personnel who can perform the task, while in otherembodiments the project management module 303 e may obtain thisinformation from another source, such as a worker shift schedule.

In some embodiments, the project planning module 303 e can generatetasks based on the multiple dependency relationships of tasks oractivities. Further to the network solution example above, the systemmay determine that the Ethernet wiring should be installed before thefirewall server can be installed, that the firewall server needs to beinstalled before the routers can function, and that the routers shouldbe installed before client machines can be configured to operate on thenetwork. In some embodiments, each of these products (e.g., parts andlabor products), may correspond to tasks that should be completed in acertain order. The project planning module may identify the order basedon the product data itself, which may indicate whether certain productsneed to be performed prior to other products, or whether the product canbe performed independent of other products.

In some embodiments, the project planning module 303 e can provideresource leveling functionality. Resource leveling may refer to aproject management technique used to resolve over-allocations orconflicts of resources (e.g., persons or equipment). For example, theproject planning module may schedule certain tasks simultaneously. Whenmore resources such as equipment or people are needed than areavailable, the tasks may have to be rescheduled concurrently orsequentially to manage the constraint. By resolving these conflicts, theproject planning module 303 e can balance the workload and resolveconflicts or over allocations in a project plan by calculating delaysand updating tasks automatically (e.g., delay task until resources areavailable).

The system and its components, such as a resource planning system 204and business process modules 303, may include hardware elements, such asone or more processors, logic devices, or circuits. For example, thesystem and its components may include a bus or other communicationcomponent for communicating information and a processor or processingcircuit coupled to the bus for processing information. The hardwareelements can also include one or more processors or processing circuitscoupled to the bus for processing information. The system also includesmain memory, such as a random access memory (RAM) or other dynamicstorage device, coupled to the bus for storing information, andinstructions to be executed by the processor. Main memory can also beused for storing position information, temporary variables, or otherintermediate information during execution of instructions by theprocessor. The system may further include a read only memory (ROM) orother static storage device coupled to the bus for storing staticinformation and instructions for the processor. A storage device, suchas a solid state device, magnetic disk or optical disk, can be coupledto the bus for persistently storing information and instructions.

According to various embodiments, the processes described herein can beimplemented by the system or hardware components in response to the oneor more processors executing an arrangement of instructions contained inmemory. Such instructions can be read into memory from anothercomputer-readable medium, such as a storage device. Execution of thearrangement of instructions contained in memory causes the system toperform the illustrative processes described herein. One or moreprocessors in a multi-processing arrangement may also be employed toexecute the instructions contained in memory. In alternativeembodiments, hard-wired circuitry may be used in place of or incombination with software instructions to effect illustrativeembodiments. Thus, embodiments are not limited to any specificcombination of hardware circuitry and software.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

FIG. 2 illustrates a block diagram of a service provider 201 inaccordance with an embodiment. The service provider 201 provides goodsand services to customers 206. In one embodiment, the service provider201 is an information technology (IT) service company that providescomputer software, hardware, and maintenance to its customers 206. Inanother embodiment, the service provider 201 is a software productdeveloper that provides the same software application to many differentcustomers 206. In another embodiment, the service provider 201 is acustom software developer that provides different software applications,customized for specific needs, to each customer 206. In anotherembodiment, the service provider 201 is a web development company thatprovides the design and implementation of web sites to its customers206. In another embodiment, the service provider 201 is a managedservice provider (MSP) that services the computer hardware and softwareof its customers 206 for a fee (e.g., a fixed fee). In anotherembodiment, the service provider 201 is a hardware reseller thatprovides its customers 206 with computer hardware, installation, andsetup. These embodiments are intended to be illustrative rather thanlimiting, and in still other embodiments, the service provider 201provides its customers 206 with various combinations of the servicesdescribed in these embodiments.

The service provider 201 employs a staff 202 to provide the servicesdescribed. To support their work, the staff 202 uses one or moreresource planning systems 204, accessing the resource planning systems204 with devices 203. Devices 203 may be connected to the resourceplanning systems 204 either directly or through a network. In oneembodiment, the resource planning systems 204 run internally at theservice provider 201. In another embodiment, the resource planningsystems 204 run externally, outside the service provider 201. In otherembodiments, the resource planning systems 204 are a mixture of internaland external systems.

The network can include a local-area network (LAN), such as a companyIntranet, a metropolitan area network (MAN), or a wide area network(WAN), such as the Internet or the World Wide Web. In some embodiments,there are multiple networks between the devices and the servers. In oneof these embodiments, the network may be a public network, a privatenetwork, or may include combinations of public and private networks.

The network may be any type or form of network and may include any ofthe following: a point-to-point network, a broadcast network, a widearea network, a local area network, a telecommunications network, a datacommunication network, a computer network, an ATM (Asynchronous TransferMode) network, a SONET (Synchronous Optical Network) network, a SDH(Synchronous Digital Hierarchy) network, a wireless network and awireline network. In some embodiments, the network may include awireless link, such as an infrared channel or satellite band. Thetopology of the network may include a bus, star, or ring networktopology. The network may include mobile telephone networks utilizingany protocol or protocols used to communicate among mobile devices,including advanced mobile phone protocol (“AMPS”), time divisionmultiple access (“TDMA”), code-division multiple access (“CDMA”), globalsystem for mobile communication (“GSM”), general packet radio services(“GPRS”) or universal mobile telecommunications system (“UMTS”). In someembodiments, different types of data may be transmitted via differentprotocols. In other embodiments, the same types of data may betransmitted via different protocols.

The service provider interacts with vendors 205, which can include oneor more of hardware vendors that supply physical hardware, softwarevendors that supply software applications, and service vendors thatsupply other services. In one embodiment, a vendor 205 is also a serviceprovider, such as the service provider 201.

The one or more servers associated with the resource planning systems204 or service provider devices 203 do not need to be physicallyproximate to each other or in the same machine farm. Thus, the serverslogically grouped as a machine farm may be interconnected using awide-area network (WAN) connection or a metropolitan-area network (MAN)connection. For example, a machine farm may include servers physicallylocated in different continents or different regions of a continent,country, state, city, campus, or room. Data transmission speeds betweenservers in the machine farm can be increased if the servers areconnected using a local-area network (LAN) connection or some form ofdirect connection.

Management of the servers may be de-centralized. For example, one ormore servers may comprise components, subsystems and circuits to supportone or more management services. In one of these embodiments, one ormore servers provide functionality for management of dynamic data,including techniques for handling failover, data replication, andincreasing robustness. Each server may communicate with a persistentstore and, in some embodiments, with a dynamic store.

A server may include a file server, application server, web server,proxy server, appliance, network appliance, gateway, gateway, gatewayserver, virtualization server, deployment server, secure sockets layervirtual private network (“SSL VPN”) server, or firewall. In oneembodiment, the server may be referred to as a remote machine or a node.

FIG. 3 illustrates a block diagram of the business units 302 andbusiness processes 303 within a service provider 201 in accordance withan embodiment. The staff 202 at the service provider 201 is organizedinto different business units 302. In one embodiment, the business units302 can include at least one of the marketing/sales department 302 a,the project management department 302 b, the purchasing department 302c, the engineering department 302 d, the accounting department 302 e,the legal department 302 f, the support department 302 g, and thecorporate management 302 h. In some embodiments, such as smallercompanies, a single staff member 202 is a member of more than onedepartment 302. In other embodiments, there are different businessunits; the embodiment described is intended to be illustrative ratherthan limiting.

The marketing/sales department 302 a is responsible for findingcustomers 206 and convincing the customers 206 to do business with theservice provider 201. The project management department 302 b isresponsible for understanding the needs of customers 206 and providingdetailed plans to the staff 202 to meet those needs. The purchasingdepartment 302 c is responsible for interacting with vendors 205 toprocure and pay for goods and services provided by the vendors 205. Theengineering department 302 d is responsible for the technical operationsof installing, setting up, and maintaining the goods and servicesprovided to the customers 206. The accounting department 302 e isresponsible for managing all of the financial aspects of the serviceprovider 201. The legal department 302 f is responsible for agreementsbetween the service provider 201 and customers 206, agreements betweenthe service provider 201 and vendors 205, and any other legal issuesinvolving the service provider 201. The support department 302 g isresponsible for helping customers 206 to resolve any problems they havewith the goods and services that the service provider 201 provides. Thecorporate management 302 h oversees the operation of the serviceprovider 201 and is ultimately responsible for its success or failure.

The business units 302 use multiple business processes 303 to interactwith vendors 205 and provide goods and services to customers 206. Insome embodiments, these business processes 303 can include at least oneof a quoting process 303 a, a sales management process 303 b, aprocurement process 303 c, a delivery and setup process 303 d, a projectplanning process or project planning business process 303 e, aninvoicing and collection process 303 f, a payables process 303 g, acontract management process 303 h, a maintenance process 303 i, asupport process 303 j, and a customer relationship management (CRM)process 303 k.

Business units 302 have the ability to interact with processes 303, andcan do so from time to time. As will be seen in FIG. 4, business units302 can have a preferred set of business processes 303 with which theyinteract on a more regular basis. For example, the vendors 205 caninteract with the procurement process 303 c, the payables process 303 g,the contract management process 303 h, and the support process 303 j. Inanother example, the customers 206 can interact with the quoting process303 a, the sales management process 303 b, the delivery and setupprocess 303 d, the project planning process 303 e, the invoicing andcollection process 303 f, the contract management process 303 h, themaintenance process 303 i, the support process 303 j, and the CRMprocess 303 k.

The quoting process 303 a provides a quote to a customer 206 with thecost of a specific set of goods and services to be provided by theservice provider 201. The sales management process 303 b helps themarketing/sales department 302 a to organize their activitiesefficiently and manage their activities with the customers 206. Theprocurement process 303 c orders, receives, and processes goods andservices from the vendors 205. The delivery and setup process 303 densures that goods and services from the service provider 201 arrive atthe customers 206 and are installed and configured properly. The projectplanning process 303 e coordinates the resources of the service provider201 in order to satisfy the commitments of the service provider 201 tothe customers 206 efficiently and in a timely manner. The invoicing andcollection process 303 f delivers invoices to customers 206, notifiescustomers 206 when a payment is due and ensures that the customers 206pay the service provider 201 in a timely manner. The payables process303 g facilitates the process that includes the service provider 201paying the vendors 205 in a timely manner. The contract managementprocess 303 h can negotiate the terms of agreements between the serviceprovider 201 and the customers 206, and can also negotiate the terms ofagreements between the service provider 201 and the vendors 205. Themaintenance process 303 i facilitates the process that includescompleting, by the service provider 201 in a timely manner, periodictasks required by the customers 206. The support process 303 j addressesproduct-related problems that the customers 206 are having, and cancontinue to work on those problems until they are resolved to thesatisfaction of the customer 206. The CRM process 303 k facilitatescontact between the service provider 201 and customers 206 bymaintaining contact information and company information, and providingconvenient interfaces for using that information to initiate telephonecalls, emails, text messages, letters, faxes, or other forms ofcommunication.

The business processes 303 use the product data 301. The product data301 is a key shared repository for data about the goods and servicesprovided by the service provider 201. Systems and methods of the presentdisclosure can use product data 301 to serve as a unifying mechanism forthe business processes 303, the business units 302 that use thosebusiness processes 303, and the staff 202 that are part of thosebusiness units 302.

FIG. 4 illustrates a block diagram of the relationships between thebusiness units 302 and the business processes 303 within a serviceprovider 201. Business units 302 can interact with business processes303, and certain interactions may occur more frequently in normalbusiness operations. The interactions described with respect to FIG. 4are not intended to be limiting, but are intended to illustratecustomary business practices.

FIG. 4a illustrates an exemplary interaction between the marketing/salesdepartment 302 a and various business processes including, e.g., atleast one of the quoting process 303 a, sales management process 303 b,contract management process 303 h, support process 303 j, or CRM process303 k. The marketing/sales department 302 a can drive the quotingprocess 303 a by communicating with the customer 206 and arriving at anunderstanding of the customer's needs, then assembling the quote fromgoods and services in the product data 301, including the prices ofthose goods and services. The marketing/sales department 302 a caninteract with the sales management process 303 b on a regular basis tofind customers 306 and close orders with these customers. Themarketing/sales department 302 a can interact with the contractmanagement process 303 h to finalize agreements with customers 206 forproducts that may require ongoing service and payment. Themarketing/sales department 302 a can interact with the support process303 j for pre-sale support activity when, e.g., a prospective customerhas a problem with a product or service and needs help from the supportdepartment 302 g. The marketing/sales department 302 a can use the CRMprocess 303 k when the department attempts to contact a customer 206. Inthese interactions, the product data 301 can serve as the basis ofinteraction between the business processes 303, and can also serve as acommon way for the marketing/sales department 302 a to understand theirinteractions with those business processes.

FIG. 4b illustrates an exemplary interaction between the projectmanagement department 302 b and various processes including, e.g, thequoting process 303 a, procurement process 303 c, delivery and setupprocess 303 d, project planning process 303 e, support process 303 j, orCRM process 303 k. The project management department 302 b can use thedetails from the quoting process 303 a to build a project plan todeliver that quote, and can also integrate that project plan with otherprojects that are going on within the service provider 201. The projectmanagement department 302 b can use the procurement process 303 c topurchase external goods and services needed from vendors 205 in order toimplement the project plan. The project management department 302 b canuse the delivery and setup process 303 d to deliver the goods andservices indicated by the project plan to the customer 206. The projectmanagement department 302 b can interact with the support process 303 jwhenever there are unforeseen difficulties in implementing the projectplan that must be resolved for the customer 206. The project managementdepartment 302 b can use the CRM process 303 k to contact a customer206. In some or all of these interactions, the product data 301 canserve as the basis of interaction between the business processes 303,and can also serve as a common way for the project management department302 b to understand their interactions with those business processes.

FIG. 4c illustrates an exemplary interaction between the purchasingdepartment 302 c and various business processes including, e.g., atleast one of the procurement process 303 c, payables process 303 g,contract management process 303 h, support process 303 j, or CRM process303 k. The purchasing department 302 c can manage the procurementprocess 303 c to order goods and services from vendors 205 that areneeded in order for the service provider 201 to meet its commitments toits customers 206. The purchasing department 302 c can help to managethe payables process 303 g to pay the vendors 205 in a timely manner andmanage the cash flow of the service provider 201. The purchasingdepartment 302 c can interact with the contract management process 303 hto get more favorable purchasing terms from vendors 205 by entering intolonger term purchase agreements with them. The purchasing department 302c can also interact with the contract management process 303 h to set upterms for services rendered by vendors 205 for the service provider 201and its customers 206. The purchasing department 302 c can interact withthe support system 303 j when a customer 206 has an issue concerning aninteraction with a vendor 205 for which the purchasing department 302 cis managing the relationship. The purchasing department 302 c can usethe CRM process 303 k to contact a customer 206. In some or all of theseinteractions, the product data 301 can serve as the basis of interactionbetween the business processes 303, and can also serve as a common wayfor the purchasing department 302 c to understand their interactionswith those business processes.

FIG. 4d illustrates an exemplary interaction between the engineeringdepartment 302 d and various business processes including, e.g, at leastone of the delivery and setup process 303 d, project planning process303 e, maintenance process 303 i, support process 303 j, or CRM process303 k. The engineering department 302 d can implement the setup part ofthe delivery and setup process 303 d at the site of the customer 206 byimplementing any installation and configuration services needed for thegoods and services provided by the service provider 201 to the customer206. The engineering department 302 d can use the project planningprocess 303 e as a source of information on the selection and timing oftasks that are required in order to implement the overall project plan.The engineering department 302 d can implement the maintenance process303 i at the site of the customer 206 by implementing the periodic workagreed to by the service provider 201 and the customer 206. Theengineering department 302 d can use the support process to understandand diagnose problems encountered by customers 206, and to implement andtrack the solutions to those problems. The engineering department 302 dcan use the CRM process 303 k to contact a customer 206. In some or allof these interactions, the product data 301 can serve as the basis ofinteraction between the business processes 303, and can also serve as acommon way for the engineering department 302 d to understand theirinteractions with those business processes.

FIG. 4e illustrates an exemplary interaction between the accountingdepartment 302 e and various business processes including, e.g., atleast one of the quoting process 303 a, procurement process 303 c,delivery and setup process 303 d, invoicing and collection process 303f, payables process 303 g, support process 303 j, or CRM process 303 k.The accounting department 302 e can use the quoting process 303 a as asource of information for creating an invoice to bill the customer 206.The accounting department 302 e can use information from the procurementprocess 303 c to generate forecasts of expenses to manage the cash flowof the service provider 201. The accounting department 302 e can use thedelivery and setup process 303 d to know when deliveries take place atcustomers 206 in order to coordinate invoices and avoid invoicing acustomer 206 for something that has not yet been delivered. Theaccounting department 302 e can manage the invoicing and collectionprocess 303 f to deliver invoices to customers 206 and collect paymentsfrom them, and can manage the cash flow of the service provider 201. Theaccounting department 302 e can manage the payables process 303 g to payvendors 205 in a timely manner, and can manage the cash flow of theservice provider 201. The accounting department 302 e can use thesupport process 303 j to manage and track billing and invoicing issuesgenerated by customers 206. The accounting department 302 e can use theCRM process 303 k to contact a customer 206. In some or all of theseinteractions, the product data 301 can serve as the basis of interactionbetween the business processes 303, and can also serve as a common wayfor the accounting department 302 e to understand their interactionswith those business processes.

FIG. 4f illustrates an exemplary interaction between the legaldepartment 302 f and various business processes including, e.g., atleast one of the contract management process 303 h, support process 303j, or CRM process 303 k. The legal department 302 f can manage thecontract management process 303 h to define and negotiate the terms ofany agreement into which the service provider 201 enters. The legaldepartment can use the support process 303 j to manage and track anyissues generated by customers 206 that involve the terms of anagreement. The legal department 302 f can use the CRM process 303 k tocontact a customer 206. In some or all of these interactions, theproduct data 301 can serve as the basis of interaction between thebusiness processes 303, and can also serve as a common way for the legaldepartment 302 f to understand their interactions with those businessprocesses.

FIG. 4g illustrates an exemplary interaction between the supportdepartment 302 g and various business processes including, e.g., atleast one of the support process 303 j or CRM process 303 k. The supportdepartment 302 g can manage the support process 303 j and can use it totrack and respond to all issues with customers 206. The supportdepartment 302 g can use the CRM process 303 k to contact a customer206. In some or all of these interactions, the product data 301 canserve as the basis of interaction between the business processes 303,and can also serve as a common way for the support department 302 g tounderstand their interactions with those business processes.

FIG. 4h illustrates an exemplary interaction between corporatemanagement 302 h and various business processes including, e.g., atleast one of the business processes 303 a-303 k. Corporate management302 h can use information from business processes 303 a-303 k to trackand understand the operation of the business of the service provider 201as a whole. This can give a “360-degree view” of the business and can bevaluable in making decisions about how to run the business. Again, theproduct data 301 can serve as the basis of interaction between thebusiness processes 303, which can facilitate oversight provided bycorporate management 302 h with respect to the status of processes 303and to understand the implications of same.

FIG. 5 illustrates a block diagram of product data 301. In this example,there are three different classes of product data 301. For example, oneclass of product data 301 can be labor 501, which describes productsthat are services. Services-oriented products can include one-timeactions that are taken by a person. For example, labor 501 can includethe action of setting up the initial configuration for a piece ofequipment. Another example of labor 501 can include the action ofinstalling a software update onto a computer. Yet another example oflabor 501 can include the action of replacing a part in a network routerthat is broken in order to restore its function. Labor products 501 canbe invoiced at a fixed rate, based on the work that is done, or at anhourly rate, based on the amount of time spent doing the work.

A second class of product data 301 is parts 502, which describesproducts that are purchased entities delivered to the customer 206. Forexample, parts 502 can include a new piece of equipment that isinstalled for the customer 206. Another example of parts 502 can includea replacement part for a network router that is broken. In someembodiments, parts 502 can also include non-physical entities such as asoftware license for a commercial third party software application thatis installed for the customer 206. In another example, parts 502 caninclude an extended warranty from a manufacturer covering repair andupdates for a longer period of time than the standard warranty. Partsproducts 502 can be invoiced at the cost to the service provider 201plus a markup.

In some embodiments, parts products can include a plurality ofsubclasses. For example, parts products can include two sub-classes,inventory parts 504 and non-inventory parts 505. Inventory parts 504 canbe parts 502 that the service provider 201 orders ahead of time andkeeps in stock, which can make it convenient and quick to deliver theinventory parts 505 to a customer 206. Non-inventory parts 505 can beparts 502 that the service provider orders from a vendor 205 on anas-needed basis. The vendor 205 can delivers the parts 502 directly tothe customer 206. The vendor 205 can also deliver the parts 502 to theservice provider 201, who can then deliver them to the customer 206.Inventory parts 504 can be invoiced with a larger markup thannon-inventory parts 505, because the service provider may need to paythe inventory and carrying costs associated with the inventory parts504.

In some embodiments, product data 301 can include a third class foragreements 503, which describes products that are repeated or periodicservices. Repeated or periodic services can refer to actions taken by aperson on a regular basis, and can be covered by service agreements thatare entered into between the service provider 201 and the customer 206.Examples of agreements 503 can include agreements to periodically cleana piece of equipment at the site of the customer 206; install updatesfor a commercial third party software application as they are released;and provide a network routing solution to meet a written specification,and continually update the network to meet the written specification asthe environment changes. Agreements products 503 are can be invoiced ata fixed fee for a given time period, such as monthly or yearly.

FIG. 6 illustrates a block diagram of using the product data 301 tounify communications between the various business processes 303. FIG. 6illustrates a number of different forms of intermediate data 601 betweenthe business processes 301, but in every case the intermediate data 601is made up of products from the product data 301, as will be describedin further detail here. In this way, the product data 301 serves as acommon source of information for both the business processes 301 and theintermediate data 601 that is used to transfer information between them.FIG. 6 is not intended to be limiting, but is instead intended toillustrate many of the aspects of the flow of information inside aservice provider 201. Other embodiments of a service provider 201 haveelements of data flow that are not shown in FIG. 6.

In some embodiments, the marketing/sales department 302 a can commencethe process by using the quoting business process 303 a to create aquote 601 a from the product data 301. In other embodiments, differentdepartments or processes can commence the flow. The quote 601 a caninclude a list of products designed to address the needs of a customer206. This list can include a plurality of classes of products such aslabor products 501, parts products 502, and agreements products 503. Forexample, a customer 206 that needs an email server may get a quote 601 athat includes the hardware for the server, which is a parts product 502,the one-time setup for that server, which is a labor product 501, andthe ongoing maintenance for that server, which is an agreements product503. The quote 601 a includes prices for all of the products in thelist, so that the customer 206 knows in advance the total price for whatis being bought, and exactly what that price includes.

The sales management business process 303 b now has the responsibilityof selling the products to the customer 206. The marketing/salesdepartment follows a series of steps for working with the customer 206.The steps can reference the list of products in the quote 601 a. In someembodiments, the sale is complete when the customer 206 agrees withevery element of the quote 601 a. At that time, the sale has been closedand the quote 601 a is converted to a sale 601 b. The sale 601 b is adifferent form of information, but it is a list of the products that thecustomer 206 has agreed to purchase, so it is created from the quote byusing the same product data 301 that the quote refers to. This is anexample of how the product data 301 serves as a common source ofinformation for both the quoting business process 303 a and the salesmanagement business process 303 b.

Once the sale 601 b is finalized, the list of products in it is copied,transferred, or otherwise conveyed to several places. For example, thelist of parts products 501 in the sale 601 b can be copied to a salesorder 601 c. The sales order 601 c is a list of the parts products 501that need to be ordered in order to deliver the quote 601 a. The salesorder goes to the procurement business process 303 c, which isresponsible for procuring the parts products 501 that are listed in thesales order. Since the sales order 601 c is created from a list ofproducts from the product data 301, this is an example of how theproduct data 301 serves as a common source of information for both thesales management business process 303 b and the procurement businessprocess 303 c.

The list of agreements products in the sale 601 b is used by thecontract management business process 303 h. Each agreements product inthe sale 601 b is used to generate an agreement 601 g. The agreement iscreated from information in the product data 301 about the product inthe list of products in the sale 601 b, so this is an example of how theproduct data 301 serves as a common source of information for both thesales management business process 303 b and the contract managementbusiness process 303 h. The contract management business process 303 his responsible for negotiating the terms of the agreements 601 g withthe customer 206, and updating the agreements 601 g with the results ofthe negotiation.

The list of all products in the sale 601 b is used by the invoicing andcollection business process 303 f. Each product in the sale 601 b iscopied into the invoicing system, which is used to create invoices 601 ito be sent to the customer 206. The invoices 601 i are created frominformation such as pricing in the product data 301 for the list ofproducts in the sale 601 b, so this is an example of how the productdata 301 serves as a common source of information for both the salesmanagement business process 303 b and the invoicing and collectionsbusiness process 303 f. The invoices 601 i are not actually sent to thecustomer 206 until the products listed on them have actually beendelivered; this is described later more fully.

The list of labor products 501 in the sale 601 b is used by the projectplanning business process 303 e. The project planning business process303 e creates a project plan 601 h, which is a list of tasks needed todeliver the quote 601 a. Each labor product 501 listed in the sale 601 bis copied into one task, and the product data 301 provides informationsuch as the expected length of time for the task. The project planningbusiness process 303 e assigns the tasks to appropriate staff 202 withinthe service provider 201 based on the nature of the tasks, and schedulesthe tasks based on the availability of the staff 202. The result is thecompleted project plan 601 h. The tasks in the project plan 601 h arecreated using information from the product data 301 about the laborproducts 501 in the sale 601 b, so this is an example of how the productdata 301 serves as a common source of information for both the salesmanagement business process 303 b and the project planning businessprocess 303 e.

The list of products in the sales order 601 c is used by the procurementbusiness process 303 c to create purchase orders 601 d. A purchase order601 d is a list of products to be procured from one vendor 205. Eachproduct in the sales order 601 c that is procured from the same vendor205 is copied into the purchase order 601 d for that vendor 205. Thepurchase order 601 d is then sent to the vendor 205 and is also used bythe payables business process 303 g. The purchase orders 601 d arecreated using the vendor information in the product data 301, so this isan example of how the product data 301 serves as a common source ofinformation for both the procurement business process 303 c and thepayables business process 303 g.

The list of products in the purchase order 601 d is used by the payablesbusiness process 303 g to create payments 601 e to be sent to thevendors 205. The payables business process 303 g monitors the deliveriesof equipment 601 f from the vendors 205 and coordinates the payments 601e to correspond to the delivery times and terms agreed upon with thevendors 205. The payments 601 e are created and scheduled using vendorinformation and payment terms in the product data 301, so this isanother example of how the product data 301 serves as a common source ofinformation for both the procurement business process 303 c and thepayables business process 303 g.

The project plan 601 h is used by the delivery and setup businessprocess 303 d to schedule the delivery of equipment 601 f to thecustomer 206 as well as the use of staff 202 to set up the equipment 601f once it has been delivered. Each task in the project plan 601 h iscopied into a service ticket 601 l, and the service tickets are used bythe staff 202 to properly organize their time so that the setup of theequipment 601 f is done in a timely and efficient manner. The servicetickets 601 l are created using information about the time and expensetaken from the product data 301 for the labor products 501 in the tasksin the project plan 601 h, so this is an example of how the product data301 serves as a common source of information for both the projectplanning business process 303 e and the delivery and setup businessprocess 303 d.

The staff 202 addressing the service tickets 601 l creates timesheets601 k for the work they are doing. Information from the service ticket601 l that is completed is copied into the timesheet entry for thatticket, and the timesheet goes to the invoicing and billing businessprocess to be included in the invoice 601 i that is sent to the customer206. This closes the loop that was described previously where a laborproduct 501 entered the invoicing and collection business process 303 ffrom the sale 601 b; the arrival of the same labor product 501 from atimesheet 601 k indicates that the labor product 501 has been deliveredto the customer and can now be included in an invoice 601 i that is sentto the customer. Since the same labor product 501 is used from theproduct data 301, this is an example of how the product data 301 servesas a common source of information for the sales management businessprocess 303 b, the invoicing and collection business process 303 f, andthe delivery and setup business process 303 d.

The agreements 601 g are used by the maintenance business process 303 ito schedule and deliver the ongoing tasks required to meet the terms ofthe agreements 601 g. The terms of the agreements 601 g in the productsin the agreements are copied into service tickets 601 l, and the servicetickets are used by the staff 202 to properly organize their time sothat the periodic maintenance tasks are done in a timely and efficientmanner. The service tickets 601 l are created using information aboutthe scheduling, time, and expense taken from the product data 301 forthe agreements products 503 in the agreements 601 g, so this is anexample of how the product data 301 serves as a common source ofinformation for both the contract management business process 303 h andthe maintenance business process 303 i.

The service tickets 601 l created by the maintenance business process303 i can be handled in essentially the same way as previously describedfor service tickets 601 l created by the delivery and setup businessprocess 303 d. In much the same way, this is an example of how theproduct data 301 serves as a common source of information for the salesmanagement business process 303 b, the invoicing and collection businessprocess 303 f, and the maintenance business process 303 i.

The customers 206 have ongoing issues 601 m with the goods and servicesdelivered by the service provider 201. The support business process 303j takes these issues 601 m in a triage process and creates a serviceticket 601 l for each ticket. Since each issue is in reference to aparticular product, the support process copies information from theproduct data 301 into the service ticket 601 l. The service tickets arethen used by staff 202 to prioritize and organize time and effortefficiently to arrive at solutions 601 n for the issues, which aredelivered to the customers 206. The product information in the servicetickets 601 l is integral in understanding, diagnosing, and solving theissues 601 m, so this is an example of how the product data 301 servesas a common source of information for the support business process 303 jand every other business process 301, since any other business process301 can be involved in solving customer issues 601 m at some point intime.

The service tickets 601 l created by the support business process 303 jare handled in essentially the same way as previously described forservice tickets 601 l created by the delivery and setup business process303 d. In much the same way, this is an example of how the product data301 serves as a common source of information for the sales managementbusiness process 303 b, the invoicing and collection business process303 f, and the support business process 303 j.

The logical end of the overall flow is reached when the customer 206delivers revenue 601 j to the service provider 201 in response toreceiving an invoice 601 i. The revenue 601 i goes to the invoicing andcollection business process 303 f, which matches the revenue against theinvoices 601 i that have been delivered to the customer 206 and closesthe outstanding billing. In this final step, the revenue 601 j can bematched to the product items in the invoice 601 i that is being paid, sothis is an example of how the product data 301 serves as a common sourceof information for the invoicing and collection business process 303 fto manage the financial relationship with the customer 206.

FIG. 7 illustrates a block diagram of the way in which the product classaffects how information from the product data 301 is copied to thebusiness processes 303 in the system. The product class is the entitythat divides the product data 301 into labor products 501, which aredetailed in FIG. 7a , parts products 502, which are detailed in FIG. 7b, and agreements products 503, which are detailed in FIG. 7c .

FIG. 7a illustrates the way in which information from labor products 501is copied to the business processes 303 in the system. In particular,information from labor products 501 is copied to the quoting businessprocess 303 a, delivery and setup business process 303 d, projectplanning business process 303 e, invoicing and collection businessprocess 303 f, and contract management business process 303 h.

The quoting business process 303 a creates a quote 601 a in which everyline item is a product from the product data 301. The line item usesinformation from the labor product data 501 to fill in, among otherthings, the description, part number, hourly rate, fixed fee, technicianskill level, estimated time, and arbitrary notes for the product.

The delivery and setup business process 303 d creates service tickets601 l for each task that is required in order to complete the deliveryand setup. Each service ticket uses information from the labor productdata 501 to fill in, among other things, the description, estimatedtime, customer name, customer contact information, and arbitrary notesfor the ticket.

The project planning business process 303 e creates a project plan 601 hin which every task corresponds to a product from the product data 301.The task uses information from the labor product data 501 to fill in,among other things, the description, budgeted time, billing type,resource type (skill level) required, and arbitrary notes for the task.

The invoicing and collection business process 303 f creates an invoice601 i in which every line item is a product from the product data 301.The line item uses information from the labor product 501 to fill in,among other things, the description, part number, hourly rate, fixedfee, billing method, and arbitrary notes for the product.

The contract management business process 303 h creates agreements 601 gwhen a labor product 501 is delivered by an outside vendor 205 ratherthan a staff member 202 of the service provider 201. In this case, thecontract management must set up an agreement 601 g with the vendor 205specifying the terms for the delivery of the labor product 501. Theagreement 601 g uses information from the labor product 501 to fill in,among other things, the name, description, hourly rate, fixed fee,billing method, estimated time, vendor name, and arbitrary notes for theproduct.

FIG. 7b illustrates the way in which information from parts products 502is copied to the business processes 303 in the system. In particular,information from parts products 502 is copied to the quoting businessprocess 303 a, procurement business process 303 c, delivery and setupbusiness process 303 d, project planning business process 303 e,invoicing and collection business process 303 f, and payables businessprocess 303 g.

The quoting business process 303 a creates a quote 601 a in which everyline item is a product from the product data 301. The line item usesinformation from the parts product data 502 to fill in, among otherthings, the description, part number, packaging, price, pricingmodifiers, image, arbitrary notes, and sourcing information for theproduct.

The procurement business process 303 c creates a purchase order 601 d inwhich every line item is a product from the product data 301. The lineitem uses information from the parts product data 502 to fill in, amongother things, the product ID, description, quantity, price, customersite, packaging, pricing modifiers, and arbitrary notes for the product.

The delivery and setup business process 303 d creates service tickets601 i for each task that is required in order to install and configurethe parts product 502. Each service ticket uses information from theparts product data 502 to fill in, among other things, the description,estimated time, customer name, customer contact information, andarbitrary notes for the ticket.

The project planning business process 303 e creates a project plan 601 hin which every task corresponds to a product from the product data 301.The tasks corresponding to parts product data 502 are the tasks forinstalling and configuring those parts products 502. The tasks useinformation from the parts product data 502 to fill in, among otherthings, the description, budgeted time, billing type, resource type(skill level) required, and arbitrary notes for the task.

The invoicing and collection business process 303 f creates an invoice601 i in which every line item is a product from the product data 301.The line item uses information from the parts product 501 to fill in,among other things, the description, part number, packaging, price,pricing modifiers, image, arbitrary notes, and sourcing information forthe product.

The payables business process 303 g creates payments 601 e for productsthat are ordered from vendors 205. The payments correspond to a seriesof parts products, and the payments use information from the partsproduct data 502 to fill in, among other things, the description, price,part number, and arbitrary notes for the product.

FIG. 7c illustrates the way in which information from agreementsproducts 503 is copied to the business processes 303 in the system. Inparticular, information from agreements products 503 is copied to thequoting business process 303 a, invoicing and collection businessprocess 303 f, contract management business process 303 h, andmaintenance business process 303 i.

The quoting business process 303 a creates a quote 601 a in which everyline item is a product from the product data 301. The line item usesinformation from the agreements product data 503 to fill in, among otherthings, the name, description, hourly rate, fixed fee, billing method,estimated time, vendor name, and arbitrary notes for the product.

The invoicing and collection business process 303 f creates an invoice601 i in which every line item is a product from the product data 301.The line item uses information from the agreements product 503 to fillin, among other things, the name, description, hourly rate, fixed fee,billing method, estimated time, vendor name, and arbitrary notes for theproduct.

The contract management business process 303 h creates agreements 601 gto fulfill the obligations required by the agreements products 503. Thecontract management sets up an agreement 601 g with the customer 206specifying the terms for the delivery of the agreements product 503. Theagreement 601 g uses information from the labor product 501 to fill in,among other things, the name, description, hourly rate, fixed fee,billing method, estimated time, vendor name, and arbitrary notes for theproduct.

The maintenance business process 303 d creates service tickets 601 l foreach task that is required in order to complete the periodic maintenancetask. Each service ticket uses information from the agreement productdata 503 to fill in, among other things, the description, hourly rate,fixed fee, billing method, estimated time, scheduling information,customer name, customer contact information, and arbitrary notes for theticket.

FIG. 8 illustrates a block diagram of reliable synchronization of thequote 601 a and invoice 601 i seen by the customer 206. After thequoting business process 303 a prepares the quote 601 a, the quote 601 ais sent to the customer 206. The customer may interact with the quote601 a and may even change it. After this, many business processes 303interact with the quote 601 a and are driven by it. Eventually,sometimes much later, one end result of the sale is the invoicing andcollection business process 303 f, which prepares the invoice 601 i tobe sent to the customer 206. This is a very important process to theservice provider 201, because it is the mechanism by which the businessmakes money. In some systems not described by the present disclosure,the invoice 601 i is created by a person 801 using a manual process thatinvolves referring to the quote 601 a. Preparing the invoice 601 i thisway has a substantial risk of introducing errors, including simpletypographical errors, transcription errors, referring to the wrong copyof a quote, and so on. Unfortunately, the consequences of a customer 206seeing a mismatch between the quote 601 a and the invoice 601 i are verynegative. The customer 206 is not sure what amount to pay, which delaysthe payment. The customer 206 may interpret the mismatch as hiddencharges or over-billing. The customer is likely to lose faith in theservice provider 201 as a result of this relatively minor error.

The present disclosure completely avoids the unfortunate situationdescribed. Since both the quote 601 a and the invoice 601 i are derivedfrom the same list of products from the product data 301, and the sameproduct list is used by both the quoting process 303 a and the invoicingand collection process 601 i, the quote 601 a and the invoice 601 i seenby the customer 206 always match exactly. In this way, the customerknows well in advance what payment is expected, so the payment ishandled smoothly. The customer feels that the service provider 201 is incontrol and professional.

FIG. 9 illustrates a block diagram of interfaces between product data301 and external systems 902-903. The service provider 201 may useexternal systems for some business processes. For example, the serviceprovider 201 may use an external system when the service provider 201previously chose a system for one business process long before decidingto use a resource planning system 204, and does not want to trainemployees to work with a different system. In another embodiment, theservice provider 201 previously chose or can choose a system for one ormore business process based on special needs that require the featuresof that system. In another embodiment, the service provider 201previously chose or can choose a system for one business process basedon requirements imposed by a customer 206 or a vendor 205. FIG. 9illustrates an embodiment where the sales management process isimplemented using an external sales management system 902 a such as thesystem provided by Salesforce.com of San Francisco, Calif., USA. FIG. 9illustrates an embodiment where the quoting process is implemented usingan external quoting system 902 b such as the system provided by QuosalLLC of Bothell, Wash., USA. FIG. 9 illustrates an embodiment where theinvoicing and collection process and the payables process is implementedusing an external accounting system 902 c such as the QuickBooks systemprovided by Intuit, Inc. of Mountain View, Calif., USA. For each ofthese external systems, the resource planning system 204 provides anapplication programming interface (API) 901 that communicatesinformation both ways between the product data 301 and the externalsystem 902. The API 901 uses a well defined interface defined by thesupplier of the external system 902, and is greatly simplified by thefact that it only needs to correctly interface to a single product datasource 301 in order to work with the rest of the resource planningsystem 204. In this way, a sales API 901 a is provided to interface theproduct data 301 with the external sales management system 902 a, aquoting API 901 b is provided to interface the product data 301 with theexternal quoting system 902 b, and an accounting API 901 c is providedto interface the product data 301 with the external accounting system902 c.

In some embodiments, external interfaces can facilitate the use ofexternal sources of product data. For example, external interfaces canfacilitate importing standard product data from an external productdatabase 903, such as the product database provided by Etilize, Inc. ofDenver, Colo., USA. The external product database 903 may includethousands of commercially available products. To use this externalproduct database 903, the resource planning system 204 provides aproduct API 901 d that communicates information from the externalproduct database 903 to the product data 301. The API 901 d uses a welldefined interface defined by the supplier of the external productdatabase 903, and is greatly simplified by the fact that it only needsto correctly interface to a single product data source 301 in order towork with the rest of the resource planning system 204.

FIG. 10 illustrates a block diagram of templates 1001 for product data301. When the marketing/sales department 302 a prepares a quote 601 afor a customer, there is often a need to add to the quote 601 a acollection of products that are commonly grouped together. In oneembodiment, a quote for a small business setup includes a server, arouter, a firewall/VPN, operating system software for the server, VPNsoftware for the employees of the business, software installation,network installation, and monitoring and maintenance for the server. Theservice provider 201 wants to ensure that all of these products areincluded in the quote with the right configuration and pricing, but itis inefficient and error prone to require that all of the sales staffknows this product configuration, especially since it will change fromtime to time. To address this issue, the resource planning system 204provides templates 1001 that are used to manage groups of products.

A list of templates 1001 is available for generating quotes 601 a. Inone embodiment, template 1 1001 a contains product references to product1 1002 a through product j 1002 c, and template 2 1001 b containsproduct references to product k 1002 d through product n 1002 f, as wellas a reference to product 2 1002 e. Each of the product references 1002in the templates 1001 is a pointer to the actual product information1010 in the product data 301, so that when the product data 301 isupdated, the templates 1001 are automatically updated as well. Whentemplate 1 1001 a and template 2 1001 b are both added to a quote 601 a,the quote 601 a lists line items 1003 for product 1 1003 a throughproduct n 1003 c. The line item 1003 b for product 2 indicates aquantity of 2, because one was generated by reference 1002 b in template1 1001 a, and the other was generated by reference 1002 e in template 21001 b.

Since the quote 601 a is generated automatically from the product data301, it is simple for the marketing/sales department to generate thequote in different formats for the convenience of the customer. In oneembodiment, the quote 601 a is organized as a simple list of theproducts. In a second embodiment, the quote 1004 is organized by thetemplates 1005 used to make the quote, with the products 1006 listedwithin the templates. In a third embodiment, the quote 1007 is organizedby the product classes labor 1008 a, parts 1008 b, and agreements 1008c, and the products are listed in each class 1008 as describedpreviously, as labor products 1009 a, parts products 1009 b, andagreements products 1009 c.

In this way, templates 1001 allow the sales/marketing department 302 ato provide a quote 601 a to a customer that contains commonly offeredcombinations of products, without requiring the sales/marketingdepartment 302 a to have detailed knowledge of the exact combination ofproducts used in those commonly offered combinations.

FIG. 11 illustrates a block diagram of bundles 1101 for product data301. When the marketing/sales department 302 a prepares a quote 601 afor a customer, it may add to the quote 601 a a product that is providedby the service provider 201, but is internally divided into a number ofcomponents. In one embodiment, the service provider 201 provides aproduct that is a small business server, but internally the product ismade up of the server hardware, the operating system software license,the labor to install and configure the server, and the agreement formaintaining the server. In some embodiments, the resource planningsystem 204 provides bundles 1101 that are used to manage products thatare made up of a number of components. The bundles 1101 can hide detailsfrom the customer, simplify the quote to make it more readable, ordisguise details of the server hardware to discourage the customer 206from looking for another source for the hardware.

A list of bundles 1101 is available for generating quotes 601 a. In oneembodiment, bundle 1 1101 a contains product references to product 11104 a through product j 1104 c, and bundle 2 1101 b contains productreferences to product k 1104 d through product n 1104 f, as well as areference to product 2 1104 e. Each of the product references 1104 inthe bundles 1101 is a pointer to the actual product information 1010 inthe product data 301, so that when the product data 301 is updated, thebundles 1101 are automatically updated as well. Each product reference1104 in a bundle 1101 contains both the product reference itself 1103,and an indicator 1102 as to whether or not the product reference shouldbe hidden. In FIG. 11, all of the product references 1104 a-1104 c inbundle 1 1101 a are hidden, and only the product reference 1104 f toproduct n in bundle 2 1101 b is hidden.

When bundle 1 1101 a and bundle 2 1101 b are both added to a quote 601a, the quote 601 a lists one line item 1105 a for bundle 1, and a lineitem 1105 b for bundle 2 that is broken down into line items 1106 forall of the product references 1104 in bundle 2 1101 b except for productn 1104 f, which is marked as hidden.

In this way, bundles 1101 allow the service provider 201 to provide itsown products that are made up of component products, and also providethe ability to hide the details of those products where it isadvantageous for the operation of the business.

In some embodiments, the system can determine to hide one or moredetails based on a user identifier (e.g., username, biometricinformation, pin number) associated with a user of the system, such as acustomer or other entity using the system. For example, the system mayinclude a list of users that are authorized to view certain data, andcompare the user identifier of the user with the list to determinewhether the user is authorized to view such data. In some embodiments,the system may prompt the user for a password prior to making thedetermination. Upon determining that the user is not authorized to viewcertain data (e.g., price or product details), the system may omit orotherwise censor the data such that the data is effectively hidden fromthe user. In some embodiments, the user can request access to the hiddendata. The system can forward the request to a system manager oroperator, who may grant or deny the request.

FIG. 12 illustrates an embodiment of a user interface, provided by theresource planning system 204, for overall access. The main display 1201shows a view of the product data 301. The navigation display has tabs toselect different main displays for contacts 1202, sales 1203, marketing1204, procurement 1205, project 1206, service desk 1207, time andexpense 1208, finance 1209, and setup 1210.

FIG. 13 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying product data.The display 1301 shows a list of the product data, with a single linefor each product 1302. The columns 1303-1311 display information abouteach product. Column 1303 displays the product ID. Column 1304 displaysthe description of the product. Column 1305 displays the price of theproduct to the customer 206. Column 1306 displays the cost of theproduct from the vendor 205. Column 1307 displays whether or not theproduct is taxable. Column 1308 displays the type of the product, column1309 displays the category of the product. and column 1310 displays thesub-category of the product. Together, the type, category, andsub-category of the product displayed by columns 1308-1310 affect theway the product is treated by the rest of the resource planning system204. Column 1311 displays the class of the product as describedpreviously with respect to FIG. 5.

FIG. 14 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying a single itemof product data. The display 1401 is shown by selecting one of theproducts 1302 in the display 1301 described previously with respect toFIG. 13. Entry 1402 allows the product ID, which is displayed in column1303 in FIG. 13, to be modified. Entry 1403 allows the product class,which is displayed in column 1311 in FIG. 13, to be modified. Entry 1404allows the product price, which is displayed in column 1305 in FIG. 13,to be modified. Entry 1405 allows the product cost, which is displayedin column 1306 in FIG. 13, to be modified.

FIG. 15 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying a quote for acustomer. The display has tabs across the top allowing selection ofdifferent components of the quote. Tab 1501 selects the hardwarecomponent of the quote. Tab 1502 selects the software component of thequote. Tab 1503 selects the services component of the quote. When aproduct is added to the quote, the product type, product category,product sub-category, and product class displayed in columns 1308-1311of FIG. 13 determine the component of the quote to which the productbelongs. Every product that is added to the quote adds a row to thequote. In one embodiment, the quote has two hardware products, whichappear in row 1504 and row 1505 in the hardware section 1501 of thequote. Each row has columns 1506-1511 that describe the product in therow. Column 1506 displays the long description of the product. Column1507 displays the manufacturer's part number for the product. Column1508 displays the number of products that are in the quote. Column 1509displays the unit price of the product, and column 1510 displays thetotal price for the product in the quote. Column 1511 displays any notesrelevant to the product in the quote.

FIG. 16 illustrates an embodiment of a printable quote to be sent to acustomer 206. The quote is customized with the name and logo 1601 of theservice provider 201. The quote includes a name and other identifyinginformation 1602. The quote includes the customer information 1603. Thequote includes summary totals 1604 of the price being quoted fordifferent classes of products. The quote also includes a total price1605 for easy reference by the customer 206.

FIG. 17 illustrates an embodiment of a user interface, provided by theresource planning system 204, for sales management. The display showsall the sales opportunities being pursued, for easy reference by thesales staff. Each sales opportunity is displayed as one row 1701. Eachrow has multiple columns 1702-1707 that display the data for that salesopportunity. Column 1702 displays the status of the opportunity. Column1703 displays the company with which the opportunity is being pursued.Column 1704 displays the internal name of the opportunity. Column 1705displays the margin (profit) that the opportunity would give the serviceprovider 201 if it were closed. Column 1706 displays the next step thatis required by the sales staff in order to advance the opportunity.Column 1707 displays the expected closing date for the opportunity, orthe actual closing date if the opportunity has been closed.

FIG. 18 illustrates an embodiment of a user interface, provided by theresource planning system 204, for managing a single sales opportunity.The display allows the sales staff to view and edit all the detailinformation about a single sales opportunity. Entry 1801 allows theinternal name of the opportunity, which is displayed in column 1704 inFIG. 17, to be modified. Entry 1802 allows the description of theopportunity to be modified.

The bottom part of the user interface is used to display severaldifferent categories of information about the opportunity. A set of tabs1803 is used to select the category of information being displayed. Inthe embodiment shown in FIG. 18, the Forecast tab is selected. Thisshows an area 1804 displaying the breakdown of the financials associatedwith each product class, and an area 1805 with the total financials forthe entire opportunity.

FIG. 19 illustrates an embodiment of a user interface, provided by theresource planning system 204, for managing the products associated witha single sales opportunity. The top part of the user interface 1901 isthe same as previously illustrated with respect to FIG. 18. In the tabs1902, a different tab is selected for Products. As a result, the bottompart of the user interface 1903 is modified to display the list ofproducts that are associated with the opportunity.

FIG. 20 illustrates an embodiment of a user interface, provided by theresource planning system 204, for creating a sales order from a salesopportunity that was won. After the sales opportunity is won, the nextstep is to deliver the sale from the service provider 201 to thecustomer 206. Initiating this process creates a dialog box 2001 on topof the existing sales management interface 2002 (shown in part). Thedialog box 2001 has a number of options 2003 about what information iscopied from the sales opportunity to the sales order. After adjustingthese options 2003, clicking on the OK button 2004 creates the salesorder.

FIG. 21 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying agreementsproducts. The display 2101 shows a list of agreements products, whereeach row 2102 has information about one agreements product. The columns2013-2106 display information about each agreements product. Column 2103displays the product ID. Column 2104 displays the product description.Column 2105 displays the price of the agreements product for thecustomer 206. Column 2106 displays the internal name of one salesopportunity that uses the product.

FIG. 22 illustrates an embodiment of a user interface, provided by theresource planning system 204, for project management. The name of theproject 2201 is the label for the display. A set of tabs 2202 selectsthe information shown in the display. In one embodiment, the Work Plantab is selected as shown in FIG. 22, and the display shows the groups oftasks 2203 with the individual tasks 2204 indented under the groups2203. For each task 2204, the columns 2205-2209 display informationabout the task. Column 2205 displays the hours of time that are budgetedfor the task. Column 2206, which comprises a group of columns, displaysthe details about the task scheduling: when the task is planned, and howmuch time is planned to finish the task. Column 2207, which is made upof a group of columns, displays the details about the timing of the taskas it was actually completed: when the task was started, when the taskwas finished, and how much time was used to finish the task. Column 2208displays the current status of the task. Column 2209 displays the staffmembers who are responsible for completing the task.

FIG. 23 illustrates an embodiment of a user interface, provided by theresource planning system 204, for managing procurement. The displayheader 2301 indicates that the page displays information aboutpurchasing. The display is a list of items that need to be purchased,where each row 2302 is a single item for purchase. The columns 2303-2305display information about each item for purchase. Column 2303 displaysthe quantity (number) of items to purchase. Column 2304 displays thecost of the item from the vendor 205. Column 2306 displays the locationwhere the item should be delivered.

FIG. 24 illustrates an embodiment of a user interface, provided by theresource planning system 204, for creating a service ticket from a salesorder. After the sales order has been planned and is ready forexecution, the next step is to generate tickets to drive theimplementation of the sales order by engineering. Initiating thisprocess creates a dialog box 2401 on top of the existing sales orderinterface 2402 (shown in part). The dialog box 2401 has a number ofoptions 2403 about what information is copied from the sales order tothe service ticket. After adjusting these options 2403, clicking on theOK button 2404 creates the service ticket.

FIG. 25 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying a serviceticket. The display header 2501 indicates the name and identifier of theservice ticket. A set of tabs 2502 selects the information shown in thedisplay. In one embodiment, the Ticket tab is selected as shown in FIG.25. As a result, the rest of the display 2503 shows information aboutthe ticket. A large interaction area 2504 allows entry of free-form textdescribing any aspect of the ticket.

The initial time 2505 budgeted for the service ticket cannot be changed.This is because the value is taken from the product data 301. This makesit clear to the engineer in charge of the ticket what the expectedeffort is for the ticket, and when to alert management if complicationsare increasing the amount of labor significantly. In this way, thegeneration of the service ticket directly from the product data 301greatly helps to control labor costs and manage overruns.

FIG. 26 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying the financialaspects of a service ticket. The tabs across the top of the interfaceare used to select the information that is displayed. Section 2601displays the billing details, including the method used for computingthe billing and the information for billing the customer. Section 2602displays the summary for the customer expenses incurred by the serviceticket. Section 2603 displays information about any external contractorused by the service provider 201 in order to complete the ticket.

FIG. 27 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying an invoicefor a customer. The display header 2701 indicates that the interface isfor generating an invoice, and provides a set of tabs for controllingthe information that is displayed. In one embodiment, the Invoice tab isselected as shown in FIG. 27, and the bottom area of the interface 2702provides a viewing and editing capability for all aspects of the invoicethat goes to the customer 206. The editing capability includes largetext areas 2703 that allow for significant customization of the invoice.

FIG. 28 illustrates an embodiment of an invoice for a customer. Theinvoice illustrated in FIG. 28 is generated using the interfacepreviously described with respect to FIG. 27. Section 2801 identifiesthe invoice and its terms. Section 2802 lists contact information andbilling information for both the service provider 201 and the customer206. Section 2803 displays the detail about the products included in theinvoice. Section 2804 summarizes the amount of the invoice for thecustomer 206.

FIG. 29 illustrates an embodiment of classes for product data. The userinterface shown in FIG. 29 is an instance of the user interfacepreviously described with respect to FIG. 14. The item Product Class2901 is implemented as a pull down 2902. The Agreement item in the pulldown 2902 corresponds to agreements products 503 as previously describedwith respect to FIG. 5. The Bundle item in the pull down 2902corresponds to bundles 1101 as previously described with respect to FIG.11. The Inventory item in the pull down 2902 corresponds to inventoryparts products 504 as previously described with respect to FIG. 5. TheNon-Inventory item in the pull down 2902 corresponds to non-inventoryparts products 505 as previously described with respect to FIG. 5. TheService item in the pull down 2902 corresponds to labor products 501 aspreviously described with respect to FIG. 5.

FIG. 30 illustrates an embodiment of a user interface, provided by theresource planning system 204, for interfacing product data to anexternal product database. The interface header 3001 displays the nameof the external product database. The interface allows the productdatabase to be selected 3002 and searched 3003 using keywords. Theresults of the search are shown in the right panel of the interface.Once an item is found using its detail information 3005, it can beselected 3004 and imported into the product data 301.

FIG. 31 illustrates an embodiment of a user interface, provided by theresource planning system 204, for selecting a product template. Tocreate a new quote, one of the menu options 3101 is to copy the quotefrom a template. Hovering over this menu option 3101 displays a list3102 of the available quote templates. The desired template can then beselected and used.

FIG. 32 illustrates an embodiment of a user interface, provided by theresource planning system 204, for displaying and modifying a productbundle 1101 as previously described with respect to FIG. 11. The displayindicates the name 3201 of the bundle. Section 3202 of the userinterface allows editing of the pricing options for the bundle. Section3203 of the user interface lists the products that are included in thebundle. In one embodiment, the bundle contains two products 3204 and3205 as shown in FIG. 32.

FIG. 33 illustrates an embodiment of a user interface, provided by theresource planning system 204, for selecting products to include in aproduct bundle. When adding a product to a bundle, the bundle userinterface as previously described with respect to FIG. 32 remains in thebackground, and a product list 3301 is displayed on top of it. Selectinga product 3302 from the list adds it to the bundle being edited.

FIG. 34 illustrates a flowchart of an embodiment of the steps taken toschedule and manage a project. The process starts at step 3801. Step3802 gets the product class for a product, and step 3803 stores theproduct data, including the product class, in the product data module.Step 3804 copies product data from the product data module to thequoting module. Step 3805 copies product data from the product datamodule to the project planning module. The loop at step 3806 repeats foreach product in the project planning module. In the loop, step 3807creates a task in the project planning module using the product. Whenthe loop is finished, the process finishes at step 3808.

Embodiments of the subject matter and the operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. The subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more circuits of computer program instructions, encoded onone or more computer storage media for execution by, or to control theoperation of, data processing apparatus. Alternatively or in addition,the program instructions can be encoded on an artificially generatedpropagated signal, e.g., a machine-generated electrical, optical, orelectromagnetic signal that is generated to encode information fortransmission to suitable receiver apparatus for execution by a dataprocessing apparatus. A computer storage medium can be, or be includedin, a computer-readable storage device, a computer-readable storagesubstrate, a random or serial access memory array or device, or acombination of one or more of them. Moreover, while a computer storagemedium is not a propagated signal, a computer storage medium can be asource or destination of computer program instructions encoded in anartificially generated propagated signal. The computer storage mediumcan also be, or be included in, one or more separate components or media(e.g., multiple CDs, disks, or other storage devices).

It should be understood that the systems described above may providemultiple ones of any or each of those components and these componentsmay be provided on either a standalone machine or, in some embodiments,on multiple machines in a distributed system. The systems and methodsdescribed above may be implemented as a method, apparatus or article ofmanufacture using programming and/or engineering techniques to producesoftware, firmware, hardware, or any combination thereof. In addition,the systems and methods described above may be provided as one or morecomputer-readable programs embodied on or in one or more articles ofmanufacture. The term “article of manufacture” as used herein isintended to encompass code or logic accessible from and embedded in oneor more computer-readable devices, firmware, programmable logic, memorydevices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g.,integrated circuit chip, Field Programmable Gate Array (FPGA),Application Specific Integrated Circuit (ASIC), etc.), electronicdevices, a computer readable non-volatile storage unit (e.g., CD-ROM,floppy disk, hard disk drive, etc.). The article of manufacture may beaccessible from a file server providing access to the computer-readableprograms via a network transmission line, wireless transmission media,signals propagating through space, radio waves, infrared signals, etc.The article of manufacture may be a flash memory card or a magnetictape. The article of manufacture includes hardware logic as well assoftware or programmable code embedded in a computer readable mediumthat is executed by a processor. In general, the computer-readableprograms may be implemented in any programming language, such as LISP,PERL, C, C++, C#, PROLOG, or in any byte code language such as JAVA. Thesoftware programs may be stored on or in one or more articles ofmanufacture as object code.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated in a single software product or packaged intomultiple software products.

References to “or” may be construed as inclusive so that any termsdescribed using “or” may indicate any of a single, more than one, andall of the described terms.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain embodiments, multitasking and parallel processingmay be advantageous.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features described in this specification in thecontext of separate embodiments can also be implemented in combinationin a single embodiment. Conversely, various features described in thecontext of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

What is claimed is:
 1. A system for automatically scheduling andmanaging projects, comprising: a product data module, executing on atleast one processor of a server, configured to obtain a first product,the first product comprising a product description and a product class,the product class comprising at least one of a labor product, a partsproduct, and an agreements product; a quoting module configured togenerate, based at least in part on a subset of the product data, aquote and update the product data with the quote; and a project planningmodule configured to: obtain the updated product data comprising thequote; and generate, based on the product class and the quote, a task,the task associated with at least one of a resource type, skill level,price, start time, deadline, and order;
 2. The system of claim 1,wherein the project planning module is further configured to: identify,based on the generated task, an available resource to perform the task;and assign the task to the available resource.
 3. The system of claim 1,wherein the first product further comprises a skill level required toprovide the first product, and the project planning module is furtherconfigured to: assign the task to a staff member, based on the skilllevel.
 4. The system of claim 3, wherein the project planning module isconfigured to: generate, automatically, based on a plurality of thetasks, a project plan.
 5. The system of claim 4, wherein the projectplan includes a subsequent task that is dependent on a previous taskbeing completed first, and the project planning module is configured to:determine, based on the product data, that the subsequent task dependson the previous task being completed first; identify, based on theproduct data, a second available resource to perform the previous taskand a third available resource to perform the previous task; generate atask for each of the previous task and the subsequent task; assign theprevious task; and assign the subsequent task responsive to receiving anindication that the previous task has been completed.
 6. The system ofclaim 1, wherein the system further comprises a ticketing system, andthe system is further configured to: generate, based on the task, aservice ticket for the ticketing system.
 7. A method for automaticallyscheduling and managing projects, comprising: obtaining, by a productdata module executing on at least one processor of a server, a firstproduct, the first product comprising a product description and aproduct class, the product class comprising at least one of a laborproduct, a parts product, and an agreements product; generating, by aquoting module, based at least in part on a subset of the product data,a quote and update the product data with the quote; and obtaining, by aproject planning module, the updated product data comprising the quote;and generating, based on the product class and the quote, a task, thetask associated with at least one of a resource type, skill level,price, start time, deadline, and order;
 8. The method of claim 7,further comprising: identifying, based on the generated task, anavailable resource to perform the task; and assigning the task to theavailable resource.
 9. The method of claim 7, wherein the first productfurther comprises a skill level required to provide the first product,and the method further comprises: assigning the task to a staff member,based on the skill level.
 10. The method of claim 7, wherein the methodfurther comprises: generating, automatically, based on a plurality ofthe tasks, a project plan.
 11. The method of claim 10, wherein theproject plan includes a subsequent task that is dependent on a previoustask being completed first, and the method further comprises:determining, based on the product data, that the subsequent task dependson the previous task being completed first; identifying, based on theproduct data, a second available resource to perform the previous taskand a third available resource to perform the previous task; generating,based on the product data, a task for each of the previous task and thesubsequent task; assigning the previous task; and assigning thesubsequent task responsive to receiving an indication that the previoustask has been completed.
 12. The method of claim 7, wherein the methodfurther comprises: generating, based on the task, a service ticket for aticketing system executing on the server.
 13. A non-transitory computerreadable storage medium comprising instructions for automaticallyscheduling and managing projects, the instructions comprisinginstructions to: obtain a first product, the first product comprising aproduct description and a product class, the product class comprising atleast one of a labor product, a parts product, and an agreementsproduct; generate, based at least in part on a subset of the productdata, a quote and update the product data with the quote; and obtain theupdated product data comprising the quote; generate, based on theproduct class and the quote, a task, the task associated with at leastone of a resource type, skill level, price, start time, deadline, andorder;
 14. The non-transitory computer readable storage medium of claim13, wherein the instructions further comprise instructions to: identify,based on the generated task, an available resource to perform the task;and assign the task to the available resource.
 15. The non-transitorycomputer readable storage medium of claim 13, wherein the first productfurther comprises a skill level required to provide the first product,and the instructions further comprise instructions to: assign the taskto a staff member, based on the skill level.
 16. The non-transitorycomputer readable storage medium of claim 13, wherein the instructionsfurther comprise instructions to: generate, automatically, based on aplurality of the tasks, a project plan.
 17. The non-transitory computerreadable storage medium of claim 16, wherein the project plan includes asubsequent task that is dependent on a previous task being completedfirst, and the instructions further comprise instructions to: determine,based on the product data, that the subsequent task depends on theprevious task being completed first; identify, based on the productdata, a second available resource to perform the previous task and athird available resource to perform the previous task; generate a taskfor each of the previous task and the subsequent task; assign theprevious task; and assign the subsequent task responsive to receiving anindication that the previous task has been completed.
 18. Thenon-transitory computer readable storage medium of claim 13, wherein theinstructions further comprise instructions to: generate, based on thetask, a service ticket for a ticketing system executing on the server.